// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const { taskId, comment, images, testUserOpenId } = event
  
  // 优先使用 event 中传递的 testUserOpenId，否则使用当前用户的 OPENID
  const effectiveOpenid = testUserOpenId || wxContext.OPENID;

  if (!effectiveOpenid) {
    return {
      success: false,
      error: '无法获取有效的 OPENID 进行权限校验'
    }
  }
  
  try {
    // 检查任务是否存在
    const taskInfo = await db.collection('tasks').doc(taskId).get()
    
    if (!taskInfo.data) {
      return {
        success: false,
        error: '整改任务不存在'
      }
    }
    
    // 使用 effectiveOpenid 查询用户信息
    const userInfoRes = await db.collection('users').where({
      openid: effectiveOpenid
    }).get()
    
    if (userInfoRes.data.length === 0) {
      return {
        success: false,
        error: `用户 (openid: ${effectiveOpenid}) 不存在`
      }
    }
    
    const user = userInfoRes.data[0]
    
    // 检查学生是否属于该宿舍
    if (user.role !== '学生' || user.building !== taskInfo.data.building || user.roomNo !== taskInfo.data.roomNo) {
      return {
        success: false,
        error: '无权提交此宿舍的整改反馈 (角色或宿舍不匹配)'
      }
    }
    
    // 检查任务状态（只有待整改状态可以提交）
    if (taskInfo.data.status !== '待整改') {
      return {
        success: false,
        error: '该整改任务已提交或已完成'
      }
    }
    
    // 更新任务状态
    await db.collection('tasks').doc(taskId).update({
      data: {
        status: '已提交',
        submitTime: new Date(),
        submitComment: comment,
        submitImages: images,
        submitterId: user._id,
        submitterName: user.name,
        updateTime: new Date()
      }
    })
    
    return {
      success: true,
      message: '整改反馈提交成功'
    }
    
  } catch (err) {
    console.error('提交整改反馈失败', err)
    return {
      success: false,
      error: err.message
    }
  }
} 